package com.skyd.core.game.crosswisewar;

/**
 * 实体接口
 * 
 * @author SkyD
 * 
 */
public interface IEntity extends IObj {
	/**
	 * 获取ATK。 功能注释：攻击力
	 */
	int getATK();

	/**
	 * 设置ATK。 功能注释：攻击力
	 */
	void setATK(int value);

	/**
	 * 获取DEF。 功能注释：防御力
	 */
	int getDEF();

	/**
	 * 设置DEF。 功能注释：防御力
	 * 
	 * @param value
	 *            DEF
	 */
	void setDEF(int value);

	/**
	 * 获取HP。 功能注释：生命值
	 */
	int getHP();

	/**
	 * 设置HP。 功能注释：生命值
	 */
	void setHP(int value);

	/**
	 * 获取MaxHP。 功能注释：最大生命值
	 */
	int getMaxHP();

	/**
	 * 设置MaxHP。 功能注释：最大生命值
	 * 
	 * @param value
	 *            MaxHP
	 */
	void setMaxHP(int value);

	/**
	 * 获取AttackDelay。 功能注释：攻击延迟
	 */
	int getAttackDelay();

	/**
	 * 设置AttackDelay。 功能注释：攻击延迟
	 * 
	 * @param value
	 *            AttackDelay
	 */
	void setAttackDelay(int value);

	/**
	 * 获取AttackRange。 功能注释：攻击距离
	 */
	int getAttackRange();

	/**
	 * 设置AttackRange。 功能注释：攻击距离
	 * 
	 * @param value
	 *            AttackRange
	 */
	void setAttackRange(int value);

	/**
	 * 获取OccupyWidth。 功能注释：占用宽度
	 */
	int getOccupyWidth();

	/**
	 * 设置OccupyWidth。 功能注释：占用宽度
	 * 
	 * @param value
	 *            OccupyWidth
	 */
	void setOccupyWidth(int value);

	/**
	 * 获取OccupyHeight。 功能注释：占用高度
	 */
	int getOccupyHeight();

	/**
	 * 设置OccupyHeight。 功能注释：占用高度
	 * 
	 * @param value
	 *            OccupyHeight
	 */
	void setOccupyHeight(int value);

	/**
	 * 攻击
	 */
	void attack(IEntity[] target);

	/**
	 * 受到伤害
	 * 
	 * @param Source
	 *            伤害来源
	 * @return 实际产生的伤害值
	 */
	int hurt(IEntity Source);
	
	/**
	 * 对目标造成伤害
	 * @param target 目标
	 * @return 实际产生的伤害值
	 */
	void hurtTo(IEntity[] target);

	/**
	 * 获取附加效果叠加后的实体
	 */
	IEntity getBuffed();
	
	/**
	 * 获取不含任何附加效果的原型
	 */
	IEntity getNative();

	/**
	 * 获取Buff。 功能注释：直属附加效果
	 */
	IEntity getBuff();

	/**
	 * 设置Buff。 功能注释：直属附加效果
	 * 
	 * @param value
	 *            Buff
	 */
	void setBuff(IEntity value);

	/**
	 * 获取BuffTarget。 功能注释：附加到的目标
	 */
	IEntity getBuffTarget();

	/**
	 * 设置BuffTarget。 功能注释：附加到的目标
	 * 
	 * @param value
	 *            BuffTarget
	 */
	void setBuffTarget(IEntity value);
}
